/**
 * 深拷贝对象【同步方法】
 * @description 深拷贝对象
 * @param {Object} obj 待拷贝的对象数据
 * @return {Object} 拷贝出的对象数据
 */
function objCopy(obj = {}) {
	
	// 如果数据为空，直接返回null
	if (obj === null) { return null; }
	// 如果数据不是对象格式，直接返回原数据
	if (typeof(obj)!='object') { return obj; }
	// 如果数据是时间格式，直接返回
	if (obj.constructor === Date) { return new Date(obj); }
	
	// 判断一个对象是否为数组
	let isArray = Array.isArray(obj);
	// 初始化结果数据
	let cloneObj = isArray ? [] : {};
	// 循环原始数据
	for (let key in obj)
	{
		// 节点 - 某项数据
		var ele_row = obj[key];
        // 中转变量
        var transfer = null;
        
		// 如果节点数据 任然是object数据格式
		if ( (typeof(ele_row)=='object' || typeof(ele_row)=='function') && ele_row!==null)
		{
			// 递归自身
			transfer = objCopy(ele_row);
		}
		// 否则直接赋值
		else { transfer = ele_row; }
        
        // 中转变量 赋值给 结果
        cloneObj[key] = transfer;
	}
	
	// 返回结果数据
	return cloneObj;
}

export default objCopy;